#ifndef CELL_H
#define CELL_H

#include "Slice.h"
#include "Scalar.h"
#include "Texture.h"
#include "Shape.h"

class Cell
{
public:
    Cell(unsigned int newUnitSize);
    virtual ~Cell();

	bool IsEmpty() const;
	const Shape* GetShape() const;
	void SetShape(Shape* newShape);
	void RemoveShape();
	const Pixel& GetFloorPixel(unsigned int x, unsigned int y) const;
	const Pixel& GetCeilingPixel(unsigned int x, unsigned int y) const;
	Slice GetSlice(const Vector& endpoint, const Scalar& distance) const;

private:
	bool empty;
	unsigned int unitSize;
	Shape *shape;
	Texture *floor, *ceiling;

	Pixel defaultFloorPixel, defaultCeilingPixel;
	static const unsigned int DEFAULT_FLOOR_PIXELRGB = 0x808080;
	static const unsigned int DEFAULT_CEILING_PIXELRGB = 0x8080FF;

};

#endif // CELL_H
